package fachada;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import negocios.Negocios;
import dados.*;

public class Fachada implements IFachada{

	private Negocios negocios;

	public Fachada() {
		this.negocios = new Negocios();
	}
	
	/*
	 * SE 'tipo' FOR:
	 * 1 - Inserir Consulta
	 * 2 - Inserir Enfermaria
	 * 3 - FichaAtendimento
	 * 4 - FichaClinica
	 * 5 - Medico
	 * 6 - Paciente
	 * 7 - ServidorGeral
	 * 8 - Acompanhante
	 */

	@Override
	public void inserir(int tipo, Object objeto) throws SQLException, IOException, ClassNotFoundException {

		switch (tipo) {
		case 1:
			this.negocios.inserirConsulta(objeto);
			break;

		case 2:
			this.negocios.inserirEnfermaria(objeto);
			break;

		case 3:
			this.negocios.inserirFichaAtendimento(objeto);
			break;

		case 4:
			this.negocios.inserirFichaClinica(objeto);
			break;
			
		case 5:
			this.negocios.inserirMedico(objeto);
			break;
			
		case 6:
			this.negocios.inserirPaciente(objeto);
			break;
			
		case 7:
			this.negocios.inserirServidorGeral(objeto);
			break;
			
		case 8:
			this.negocios.inserirAcompanhante(objeto);

		default:
			break;
		}

	}
	
	public ArrayList<Consulta> selecionarConsulta(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarConsulta(chave);
	}
	
	public ArrayList<Enfermaria> selecionarEnfermaria(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarEnfermaria(chave);
	}
	
	public ArrayList<FichaAtendimento> selecionarFichaAtendimento(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarFichaAtendimento(chave);
	}
	
	public ArrayList<FichaClinica> selecionarFichaClinica(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarFichaClinica(chave);
	}
	
	public ArrayList<Medico> selecionarMedico(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarMedico(chave);
	}
	
	public ArrayList<Paciente> selecionarPaciente(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarPaciente(chave);
	}
	
	public ArrayList<ServidorGeral> selecionarServidorGeral(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarServidorGeral(chave);
	}
	
	public ArrayList<Acompanhante> selecionarAcompanhante(String chave) throws ClassNotFoundException, SQLException{
		return this.negocios.selecionarAcompanhante(chave);
	}

	public Negocios getNegocios() {
		return this.negocios;
	}

	public void setNegocios(Negocios negocios) {
		this.negocios = negocios;
	}
	

	//##################################### NAO NECESSARIO ###########################################
	@Override
	public void remover(int tipo, Object objeto) {
		switch (tipo) {
		case 1:
			this.negocios.removerConsulta(objeto);
			break;

		case 2:
			this.negocios.removerEnfermaria(objeto);
			break;

		case 3:
			this.negocios.removerFichaAtendimento(objeto);
			break;

		case 4:
			this.negocios.removerFichaClinica(objeto);
			break;
			
		case 5:
			this.negocios.removerMedico(objeto);
			break;
			
		case 6:
			this.negocios.removerPaciente(objeto);
			break;
			
		case 7:
			this.negocios.removerServidorGeral(objeto);
			break;

		default:
			break;
		}

	}

	@Override
	public void atualizar(int tipo, Object objeto) {
		switch (tipo) {
		case 1:
			this.negocios.atualizarConsulta(objeto);
			break;

		case 2:
			this.negocios.atualizarEnfermaria(objeto);
			break;

		case 3:
			this.negocios.atualizarFichaAtendimento(objeto);
			break;

		case 4:
			this.negocios.atualizarFichaClinica(objeto);
			break;
			
		case 5:
			this.negocios.atualizarMedico(objeto);
			break;
			
		case 6:
			this.negocios.atualizarPaciente(objeto);
			break;
			
		case 7:
			this.negocios.atualizarServidorGeral(objeto);
			break;

		default:
			break;
		}
	}

}
